package com.fowo.api.model.nav.sell.order.fba;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 订单管理第三方仓发货 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class NavSellOrderFBAImportPo {

  /** 补发订单原系统单号 */
  @ExcelProperty("补发订单原系统单号")
  @Size(max = 50, message = "补发订单原系统单号长度不能超过50")
  private String originalOrderId;

  /** 系统单号 */
  @ExcelProperty("系统单号")
  private String orderId;

  /** 店铺 */
  @ExcelProperty("*店铺")
  @NotBlank(message = "店铺不能为空")
  @Size(max = 50, message = "店铺长度不能超过50")
  private String shopInfoShopName;

  @ExcelIgnore
  @Schema(title = "*店铺")
  private String shopInfo;

  /** 币种 */
  @ExcelProperty("币种")
  private String currency;

  /** 订单类型 */
  @ExcelProperty("订单类型")
  private String type;

  /** 状态 */
  @ExcelProperty("*状态")
  @NotBlank(message = "状态不能为空")
  private String status;

  /** 站点 */
  @ExcelProperty("站点")
  @Size(max = 50, message = "站点长度不能超过50")
  private String siteName;

  @ExcelIgnore
  @Schema(title = "站点")
  private String site;

  /** 订单标签 */
  @ExcelProperty("订单标签")
  private String tag;

  /** 订单来源 */
  @ExcelProperty("订单来源")
  private String source;

  /** 拆分订单类型 */
  @ExcelProperty("拆分订单类型")
  private String splitType;

  /** 客服备注 */
  @ExcelProperty("客服备注")
  @Size(max = 2048, message = "客服备注长度不能超过2048")
  private String remark;

  /** 支付方式 */
  @ExcelProperty("支付方式")
  private String paymentWay;

  /** 买家姓名 */
  @ExcelProperty("买家姓名")
  @Size(max = 50, message = "买家姓名长度不能超过50")
  private String buyerName;

  /** 买家邮箱 */
  @ExcelProperty("买家邮箱")
  @Size(max = 50, message = "买家邮箱长度不能超过50")
  private String buyerEmail;

  /** 客选物流 */
  @ExcelProperty("客选物流")
  @Size(max = 50, message = "客选物流长度不能超过50")
  private String deliveryLogisticsLabel;

  @ExcelIgnore
  @Schema(title = "客选物流")
  private String deliveryLogistics;

  /** 买家留言 */
  @ExcelProperty("买家留言")
  @Size(max = 2048, message = "买家留言长度不能超过2048")
  private String buyerLeaveWord;

  /** 收件人 */
  @ExcelProperty("收件人")
  @Size(max = 50, message = "收件人长度不能超过50")
  private String deliveryReceipt;

  /** 邮编 */
  @ExcelProperty("邮编")
  @Size(max = 50, message = "邮编长度不能超过50")
  private String deliveryZipCode;

  /** 电话 */
  @ExcelProperty("电话")
  @Size(max = 50, message = "电话长度不能超过50")
  private String deliveryPhone;

  /** 国家/地区 */
  @ExcelProperty("国家/地区")
  @Size(max = 200, message = "国家/地区长度不能超过200")
  private String deliveryCountryCountry;

  @ExcelIgnore
  @Schema(title = "国家/地区")
  private String deliveryCountry;

  /** 省/州 */
  @ExcelProperty("省/州")
  @Size(max = 50, message = "省/州长度不能超过50")
  private String deliveryProvince;

  /** 城市 */
  @ExcelProperty("城市")
  @Size(max = 50, message = "城市长度不能超过50")
  private String deliveryCity;

  /** 区/县 */
  @ExcelProperty("区/县")
  @Size(max = 50, message = "区/县长度不能超过50")
  private String deliveryArea;

  /** 门牌号 */
  @ExcelProperty("门牌号")
  @Size(max = 50, message = "门牌号长度不能超过50")
  private String deliveryHouseNumber;

  /** 公司名 */
  @ExcelProperty("公司名")
  @Size(max = 50, message = "公司名长度不能超过50")
  private String deliveryCompany;

  /** 地址类型 */
  @ExcelProperty("地址类型")
  private String deliveryAddressType;

  /** 详细地址1 */
  @ExcelProperty("详细地址1")
  @Size(max = 50, message = "详细地址1长度不能超过50")
  private String deliveryAddress1;

  /** 详细地址2 */
  @ExcelProperty("详细地址2")
  @Size(max = 50, message = "详细地址2长度不能超过50")
  private String deliveryAddress2;

  /** 详细地址3 */
  @ExcelProperty("详细地址3")
  @Size(max = 50, message = "详细地址3长度不能超过50")
  private String deliveryAddress3;

  /** 发货仓属性 */
  @ExcelProperty("发货仓属性")
  private String deliveryWidType;

  /** 发货仓库 */
  @ExcelProperty("发货仓库")
  @Size(max = 50, message = "发货仓库长度不能超过50")
  private String deliveryWarehouseName;

  @ExcelIgnore
  @Schema(title = "发货仓库")
  private String deliveryWarehouse;

  /** 物流方式 */
  @ExcelProperty("物流方式")
  @Size(max = 50, message = "物流方式长度不能超过50")
  private String deliveryLogisticsChannelLabel;

  @ExcelIgnore
  @Schema(title = "物流方式")
  private String deliveryLogisticsChannel;

  /** 运单号 */
  @ExcelProperty("运单号")
  @Size(max = 50, message = "运单号长度不能超过50")
  private String deliveryWaybillId;

  /** 跟踪号 */
  @ExcelProperty("跟踪号")
  @Size(max = 50, message = "跟踪号长度不能超过50")
  private String deliveryTrackId;

  /** 合作伙伴订单号 */
  @ExcelProperty("合作伙伴订单号")
  @Size(max = 50, message = "合作伙伴订单号长度不能超过50")
  private String deliveryPartnerOrderId;

  /** 标发单号 */
  @ExcelProperty("标发单号")
  @Size(max = 50, message = "标发单号长度不能超过50")
  private String deliveryIssuId;

  /** 发货方式 */
  @ExcelProperty("发货方式")
  private String deliveryType;

  /** 发货时间 */
  @ExcelProperty("发货时间")
  @DateTimeString(message = "发货时间不是有效的时间日期格式")
  private String deliveryTime;

  /** 标发时间 */
  @ExcelProperty("标发时间")
  @DateTimeString(message = "标发时间不是有效的时间日期格式")
  private String issuTime;

  /** 收件税号类型 */
  @ExcelProperty("收件税号类型")
  private String deliveryRecipientTaxType;

  /** 收件人税号 */
  @ExcelProperty("收件人税号")
  @Size(max = 50, message = "收件人税号长度不能超过50")
  private String deliveryRecipientTaxNo;

  /** 收件人身份证号 */
  @ExcelProperty("收件人身份证号")
  @Size(max = 50, message = "收件人身份证号长度不能超过50")
  private String deliveryRecipientIdentityNo;

  /** 发件税号类型 */
  @ExcelProperty("发件税号类型")
  private String deliverySenderTaxNoType;

  /** 发件人税号 */
  @ExcelProperty("发件人税号")
  @Size(max = 50, message = "发件人税号长度不能超过50")
  private String deliverySenderTaxNo;

  /** COD订单 */
  @ExcelProperty("COD订单")
  private String deliveryCodeOrder;

  /** 预估运费 */
  @ExcelProperty("预估运费")
  @DecimalString(message = "预估运费小数格式不正确", label = "预估运费")
  private String deliveryThinkFreight;

  /** 估算重量单位 */
  @ExcelProperty("估算重量单位")
  private String deliveryThinkWeightUnit;

  /** 估算重量 */
  @ExcelProperty("估算重量")
  @DecimalString(message = "估算重量小数格式不正确", label = "估算重量")
  private String deliveryThinkWeight;

  /** 估算尺寸单位 */
  @ExcelProperty("估算尺寸单位")
  private String deliveryThinkSizeUnit;

  /** 估算尺寸长 */
  @ExcelProperty("估算尺寸长")
  @DecimalString(message = "估算尺寸长小数格式不正确", label = "估算尺寸长")
  private String deliveryThinkSizeLength;

  /** 估算尺寸宽 */
  @ExcelProperty("估算尺寸宽")
  @DecimalString(message = "估算尺寸宽小数格式不正确", label = "估算尺寸宽")
  private String deliveryThinkSizeWidth;

  /** 估算尺寸高 */
  @ExcelProperty("估算尺寸高")
  @DecimalString(message = "估算尺寸高小数格式不正确", label = "估算尺寸高")
  private String deliveryThinkSizeHeight;

  /** 预估包裹体积单位 */
  @ExcelProperty("预估包裹体积单位")
  private String deliveryThinkVolumeUnit;

  /** 预估包裹体积 */
  @ExcelProperty("预估包裹体积")
  @DecimalString(message = "预估包裹体积小数格式不正确", label = "预估包裹体积")
  private String deliveryThinkVolume;

  /** 估算计费重量单位 */
  @ExcelProperty("估算计费重量单位")
  private String deliveryThinkFeeWeightUnit;

  /** 估算计费重量 */
  @ExcelProperty("估算计费重量")
  @DecimalString(message = "估算计费重量小数格式不正确", label = "估算计费重量")
  private String deliveryThinkFeeWeight;

  /** 包裹实重单位 */
  @ExcelProperty("包裹实重单位")
  private String deliveryRealWeightUnit;

  /** 包裹实重 */
  @ExcelProperty("包裹实重")
  @DecimalString(message = "包裹实重小数格式不正确", label = "包裹实重")
  private String deliveryRealWeight;

  /** 包裹尺寸单位 */
  @ExcelProperty("包裹尺寸单位")
  private String deliveryRealSizeUnit;

  /** 包裹长 */
  @ExcelProperty("包裹长")
  @DecimalString(message = "包裹长小数格式不正确", label = "包裹长")
  private String deliveryRealSizeLength;

  /** 包裹宽 */
  @ExcelProperty("包裹宽")
  @DecimalString(message = "包裹宽小数格式不正确", label = "包裹宽")
  private String deliveryRealSizeWidth;

  /** 包裹高 */
  @ExcelProperty("包裹高")
  @DecimalString(message = "包裹高小数格式不正确", label = "包裹高")
  private String deliveryRealSizeHeight;

  /** 包裹体积单位 */
  @ExcelProperty("包裹体积单位")
  private String deliveryRealVolumeUnit;

  /** 包裹体积 */
  @ExcelProperty("包裹体积")
  @DecimalString(message = "包裹体积小数格式不正确", label = "包裹体积")
  private String deliveryRealVolume;

  /** 实际计费重量单位 */
  @ExcelProperty("实际计费重量单位")
  private String deliveryRealFeeWeightUnit;

  /** 实际计费重量 */
  @ExcelProperty("实际计费重量")
  @DecimalString(message = "实际计费重量小数格式不正确", label = "实际计费重量")
  private String deliveryRealFeeWeight;

  /** 包裹数量 */
  @ExcelProperty("包裹数量")
  @IntegerString(
    message = "包裹数量数值格式不正确",
    label = "包裹数量",
    min = 0
  )
  private String deliveryRealQuantity;

  /** 物流运费币种 */
  @ExcelProperty("物流运费币种")
  private String deliveryRealCurrencyCode;

  /** 物流运费 */
  @ExcelProperty("物流运费")
  @DecimalString(message = "物流运费小数格式不正确", label = "物流运费")
  private String deliveryRealFreight;

  /** 物流下单状态 */
  @ExcelProperty("物流下单状态")
  private String deliveryStatus;

  /** 物流下单消息 */
  @ExcelProperty("物流下单消息")
  @Size(max = 50, message = "物流下单消息长度不能超过50")
  private String deliveryMessage;

  /** 物流备注 */
  @ExcelProperty("物流备注")
  @Size(max = 50, message = "物流备注长度不能超过50")
  private String deliveryRemark;

  /** 审核时间 */
  @ExcelProperty("审核时间")
  @DateTimeString(message = "审核时间不是有效的时间日期格式")
  private String processTime;

  /** 配货时间 */
  @ExcelProperty("配货时间")
  @DateTimeString(message = "配货时间不是有效的时间日期格式")
  private String distributionTime;

  /** 打单时间 */
  @ExcelProperty("打单时间")
  @DateTimeString(message = "打单时间不是有效的时间日期格式")
  private String pickingTime;

  /** 尾款时间 */
  @ExcelProperty("尾款时间")
  @DateTimeString(message = "尾款时间不是有效的时间日期格式")
  private String tailTime;

  /** 截单状态 */
  @ExcelProperty("截单状态")
  private String cutStatus;

  /** 配货状态 */
  @ExcelProperty("配货状态")
  private String distributionStatus;

  /** 面单打印 */
  @ExcelProperty("面单打印")
  private String printFaceStatus;

  /** 订单打印 */
  @ExcelProperty("订单打印")
  private String printOrderStatus;

  /** 是否验货 */
  @ExcelProperty("是否验货")
  private String isTest;

  /** 是否称重 */
  @ExcelProperty("是否称重")
  private String isWeigh;

  /** 销售出库单号 */
  @ExcelProperty("销售出库单号")
  @Size(max = 50, message = "销售出库单号长度不能超过50")
  private String woNumber;

  /** 销售出库单Id */
  @ExcelProperty("销售出库单Id")
  @LongString(
    message = "销售出库单Id数值格式不正确",
    label = "销售出库单Id",
    min = 0L
  )
  private String wmsOrderId;

  /** 批次号 */
  @ExcelProperty("批次号")
  @LongString(message = "批次号数值格式不正确", label = "批次号", min = 0L)
  private String boxId;

  /** 发货时间 */
  @ExcelProperty("发货时间")
  @DateTimeString(message = "发货时间不是有效的时间日期格式")
  private String pickingDeliveryTime;

  /** 批次号 */
  @ExcelProperty("批次号")
  @Size(max = 50, message = "批次号长度不能超过50")
  private String batchId;

  /** 物流商 */
  @ExcelProperty("物流商")
  @Size(max = 50, message = "物流商长度不能超过50")
  private String providerName;
}
